#ifndef GPIO_UTIL_H
#define GPIO_UTIL_H

#include <gpiod.h>

/*
 * 读取指定芯片(label)与引脚(offset)的电平值。
 * - chip_label: 例如 "GPIOF"，使用 gpiod_chip_open_by_label 打开
 * - line_offset: 引脚编号（从0开始）
 * - active_low: 非0表示此引脚为低有效（返回的逻辑值会自动取反）
 * - value_out: 输出参数，返回逻辑电平：1=高/按下(当active_low=1时)
 * - consumer: 申请GPIO时的consumer名字，传NULL或空串则使用默认
 * 返回0表示成功，<0表示失败
 */
int gpio_read_value(const char *chip_label,
                    unsigned int line_offset,
                    int active_low,
                    int *value_out,
                    const char *consumer);

/*
 * 设置指定芯片(label)与引脚(offset)的逻辑电平。
 * - chip_label: 例如 "GPIOE"
 * - line_offset: 引脚编号（从0开始）
 * - active_low: 1 表示该引脚为低有效（传入的逻辑值会自动取反后输出）
 * - value: 逻辑电平（0/1）
 * - consumer: 申请GPIO时的consumer名字，传NULL或空串则使用默认
 * 返回0表示成功，<0表示失败
 */
int gpio_write_value(const char *chip_label,
                     unsigned int line_offset,
                     int active_low,
                     int value,
                     const char *consumer);

#endif /* GPIO_UTIL_H */
